package com.cst.zju.anime.service;

import java.util.List;

import com.cst.zju.anime.model.Anime;
import com.cst.zju.anime.utils.Page;

public interface IAnimeService {

    /**
     * 导航栏搜索
     * @param name 用户输入的动漫名称
     * @return
     */
    Page<Anime> getAnimeBySearch(int pageNum, int pageSize, String name);

    /**
     * 新增连载
     * @param pageNum 0
     * @param pageSize 10
     * @return
     */
    List<Anime> getNewSerialAnime(int pageNum, int pageSize);

    /**
     * 新增完结
     * @param pageNum 0
     * @param pageSize 10
     * @return
     */
    List<Anime> getNewCompletionAnime(int pageNum, int pageSize);

    /**
     * 推荐连载
     * @param pageNum 0
     * @param pageSize 10
     * @return
     */
    List<Anime> getRecommendSerialAnime(int pageNum, int pageSize);

    /**
     * 推荐完结
     * @param pageNum 0
     * @param pageSize 10
     * @return
     */
    List<Anime> getRecommendCompletionAnime(int pageNum, int pageSize);

    /**
     * 热门新番
     * @param pageNum 0
     * @param pageSize 10
     * @param season 输入样例{2015年七月新番...}
     * @return
     */
    List<Anime> getHotSeasonAnime(int pageNum, int pageSize, String season);

    /**
     * 动漫总排行榜(在连载和完结中也存在)
     * @param pageNum 0
     * @param pageSize 15或30
     * @return
     */
    List<Anime> getAnimeRankAllList(int pageNum, int pageSize);

    /**
     * 新番排行榜
     * @param pageNum 0
     * @param pageSize 15
     * @param season 输入样例{2015年七月新番...}
     * @return
     */
    List<Anime> getAnimeRankListBySeason(int pageNum, int pageSize, String season);
    
    /**
   	 * 最新更新筛选
   	 * @param type 分类 {连载对应"连载"，完结对应"集全"}
   	 * @param pageNum ?
   	 * @param pageSize 20
   	 * @param classifyId {A,B,C ...}
   	 * @param tag 
   	 * @return
   	 */
    Page<Anime> getNewAnimeByFilter(String type, int pageNum, int pageSize, Integer classifyId, String tag);
       
    /**
   	 * 热门播放筛选
   	 * @param type 分类 {连载对应"连载"，完结对应"集全"}
   	 * @param pageNum 页码
   	 * @param pageSize 20
   	 * @param classifyId {A,B,C ...}
   	 * @param tag 
   	 * @return
   	 */
    Page<Anime> getHotAnimeByFilter(String type, int pageNum, int pageSize, Integer classifyId, String tag);

    /**
     * 动漫排行 本周
     * @param pageNum 0
     * @param pageSize 30
     * @return
     */
    List<Anime> getAnimeRankOfWeekList(int pageNum, int pageSize);

    /**
     * 动漫排行 本月
     * @param pageNum 0
     * @param pageSize 30
     * @return
     */
    List<Anime> getAnimeRankOfMonthList(int pageNum, int pageSize);
}
